MOVE表达式、范围和运算符

我们已经介绍了 Move on Sui 的许多概念。 Move on Sui也提供了多种表达方式。让我们深入了解它们以及范围在 Move on Sui 中的工作原理。

Sui表达式

返回某些内容或以分号结尾的语句的代码单元是表达式。该内容可以是整数、字符串、布尔值或任何有效的数据类型。我们可以有把握地说函数是表达式,因为它们返回一个值。

Move on Sui有3种表达方式:

  • 文字

让我们通过示例来探讨这些表达式:

空表达式

我们可能永远不会直接使用这个表达式,但知道我们可以选择空表达式总是好的。

只需在函数体中添加一个空括号即可表示空表达式。 VM 会自动忽略这些内容,因此定义这些内容无需额外成本。

#![allow(unused)]
fn main() {
fun function_name() {
	() 
}
}

文字表达式

我们学会了定义变量和常量,对吗?

对您来说,好消息是定义它们并以分号结束它们使其成为一个表达式。

以下是我们在变量和常量课程中使用的示例。所有这些都是文字表达。唷!是不是很简单😃

#![allow(unused)]
fn main() {
let a;
let b : u8;
let c = true;
let d : u8 = 10;
}
  • 最简单的表达式可以是 10 + 5; 甚至 2; 。我们实际上使用它们来定义变量或常量。

块表达式

{} 标记的块是一个表达式。块中可以包含表达式或其他块。它可能会也可能不会返回值。如果是块的返回值,则不必以分号结尾。

#![allow(unused)]
fn main() {
module examples::example {
	fun function_name() {
		// this is a block
		{ }; // this too
		{ 3; // a block
			{true;} // another expression in a block
		}
	}
}
}

MOVE语言的范围

既然我们讨论了块表达式,我们还需要了解其中的 Scope 的含义。正如定义范围一样,范围是指某个变量居住或存在的区域。这意味着每当我们使用 {} 定义块时,我们就定义了一个范围。因此,我们将在该范围内定义的所有变量都可以访问,但在该范围之外,我们无法调用它们。

我知道这可能会让您感到困惑,所以让我用一个例子来解释它,让您更容易理解:

#![allow(unused)]
fn main() {
module examples::example {
	fun function_name() {
		// This is the scope of a function - Block A
		let a = 0;

		{
			let b = 0; 
		}; // this is a scope within a function- Block B

		{ // Block C
			let c = 0;
			{let flag = true;} // this is a nested scope - Block D
		}
	}
}
}

考虑到上面的例子,我们可以注意到以下几点:

  • 块 A 中定义的任何内容都可以被块 B、C 和 D 访问。这意味着我们可以在 function_name 函数中的任何位置访问 a
  • 块 B 中定义的任何内容都无法被块 A、C 和 D 访问。这意味着我们无法在其他任何地方访问 b
  • 块 C 中定义的任何内容对于块 A 和 B 来说都无法访问,但对于块 D 来说是可以访问的,因为它嵌套在块 C 中。这意味着除了块 C 和 D 之外,我们无法访问 c 任何其他地方。
  • 块 D 中定义的任何内容都无法被块 A、B 和 C 访问。这意味着我们无法访问除块 D 之外的任何其他地方的 flag ,甚至不能访问块 C。

让我将所有这些解释总结为一行。变量只能存在于其定义的范围或块内。

因为我们已经完成了表达式和范围。现在让我们快速看看 Move on Sui 中有哪些整数运算符。

MOVE语言操作

Move on Sui 有各种运算符,包括以下 uint 运算符: u8u64u128

Move 有多种运算符来修改整数值。这是一个列表:

操作员操作员名称
+
-
/分区
*穆尔
%模组
<<左移
>>右移
&
^异或

_ 是独一无二的

move 不允许你声明一个你不使用的变量,它会抛出一个错误。如此高效,不是吗?

但如果我们出于某种原因必须定义一个值,我们确实有一个作弊门😏。

考虑以下代码:

module examples::example {

	fun add() {
        let sum = 1;
    }
}

这将引发错误,因为我们没有在其他任何地方使用 sum 。但是,如果将 sum 替换为 _ ,如下所示,我们将不会收到错误。酷!!

module examples::example {

	fun add() {
        let _ = 1;
    }
}

小结

在本课中,我们介绍了 Move 中的表达式,包括空表达式、文字表达式和块表达式。我们还了解了范围以及它们如何定义变量可访问性。了解表达式和范围对于在 Move on Sui 中编写有效的代码至关重要。最后,我们了解了 Move on Sui 中可用的整数运算符,并探索了 Move on Sui 的独特之处。通过理解这些运算符,我们就可以开始编写基本代码了。

在继续您的编程之旅时,不断练习和探索 Move on Sui!

quiz

解释 Move on Sui 中范围的概念以及它如何影响变量的可访问性。